package com.hst.capacity.domain.service;

import cn.smartravel.framework.redis.domain.LiveLocation;
import com.hst.capacity.domain.model.entity.driver.DriverEntity;
import com.hst.capacity.domain.model.request.driver.DriverAddCertificateParam;
import com.hst.capacity.domain.model.request.driver.DriverAddParam;
import com.hst.capacity.domain.model.request.driver.DriverBandCarParam;
import com.hst.capacity.domain.model.request.driver.DriverSearchParam;
import com.hst.capacity.domain.model.response.PagingResultVO;
import com.hst.capacity.domain.model.response.agent.AgentDriverNumberCountVO;
import com.hst.capacity.domain.model.response.driver.DriverBandCarVO;
import com.hst.capacity.domain.model.response.driver.DriverInfoVO;

import java.util.List;

/**
 *  "司机运营"领域服务接口
 *
 * */
public interface DriverService {

    /**
     * 保存司机信息
     * @param param
     * @return
     */
    DriverEntity save(DriverAddParam param);

    String deviceUnband(String idDriver);

    DriverInfoVO driverInfo(String idDriver);

    /**
     * 司机绑定车辆
     * @param param
     * @return
     */
    DriverBandCarVO driverBandVehicle(DriverBandCarParam param);

    LiveLocation driverLocation(String idDriver);

    /**
     * 分页并条件查询司机信息
     * @param param
     * @return
     */
    PagingResultVO<DriverEntity> searchWithConditionsAndPaging(DriverSearchParam param);

    /**
     * 获取司机绑定车辆
     * @param idDriver
     * @return
     */
    DriverBandCarVO findDriverEntityByIdDriver(String idDriver);


    Object driverAddCertificate(DriverAddCertificateParam param);


    DriverAddCertificateParam driverAddCertificateSelect(String idDriver);

    /**
     * 运营商统计司机数量
     * @param idAgent
     * @return
     */
    AgentDriverNumberCountVO driverAgentCount(String idAgent);

    DriverEntity findDriverByIdFranchiseeWithRand(String idFranchisee);

    float driverRate(String idFranchisee,int moduleType);

}
